A service-oriented application is a group of computer-implemented autonomous software modules, commonly referred to as services that are organized to communicate with each other to accomplish one or more goals. Each service encapsulates a unique logical functionality over which it has exclusive control. This logical functionality that can be accessed by the other services in its respective application through protocols defined by what is known as a service contract.
Often, similar service-oriented applications are provided to different consumers whose requirements may vary from one to another. Accordingly, service-oriented applications are often customized to the individual requirements of a consumer. However, at times the differences in service-oriented applications for different end consumers are relatively trivial (e.g., slight variations in inter-service communication protocol or service logic), whereas much of the overall structure and functionality of the applications is similar enough to recycle for each consumer solution.